Docs Italia beta

Documenti pubblici, digitali.

5.1. Raccomandazioni sul formato dei dati

5.1.1. [RAC_REST_FORMAT_001] Utilizzo oggetti JSON

Nella tecnologia REST la comunicazione DOVREBBE avvenire tramite oggetti JSON RFC 8259 con il relativo media-type application/json.

È possibile fare eccezione in presenza di specifiche in cui gli oggetti di comunicazione sono formalizzati in forma diversa da JSON (es. INSPIRE, HL7).

5.1.2. [RAC_REST_FORMAT_002] Codificare dati strutturati con oggetti JSON

I dati strutturati in formato JSON RFC 8259 DOVREBBERO essere trasferiti tramite oggetti, in modo da permettere l’estensione retrocompatibile della response con ulteriori attributi, ad esempio paginazione.

Cioè:

  • il payload di una response contenente una entry ritorna un oggetto
{
        "given_name": "Paolo",
        "last_name": "Rossi",
        "id": 313
}
  • il payload di una response contenente più entry ​ritorna un oggetto contenente una lista​ e non direttamente una lista.
{
        "items": [
                {
                        "given_name": "Carlo",
                        "family_name": "Bianchi",
                        "id": 314
                },
                {
                        "given_name": "Giuseppe",
                        "family_name": "Verdi",
                        "id": 315
                }
        ]
}

5.1.3. [RAC_REST_FORMAT_003] Convenzioni di rappresentazione

DEVONO usarsi le seguenti convenzioni di rappresentazione:

  • I booleani non DEVONO essere null.
  • Gli array vuoti non DEVONO essere null, ma liste vuote, ad es. [].
  • Le enumeration DEVONO essere rappresentate da stringhe non nulle.

5.1.4. [RAC_REST_FORMAT_004] Definire format quando si usano i tipi Number ed Integer

I numeri e gli interi DEVONO indicare la dimensione utilizzando il parametro format.

La seguente tabella - non esaustiva - elenca un set minimo di formati.

Tabella 5.1 Set minimo dei formati
TYPE FORMAT VALORI AMMESSI
integer int32 interi tra -2^31 e 2^31-1
integer int64 interi tra -2^63 e 2^63-1
number decimal32 / float IEEE 754-2008/IS 60559:2011 decimale a 32 bit
number decimal64 / double IEEE 754-2008/IS 60559:2011 decimale a 64 bit
number decimal128 IEEE 754-2008/IS 60559:2011 decimale a 128 bit

Le implementazioni DEVONO utilizzare il tipo più adatto.